// ====================== 浏览器扩展部分 ======================
// chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
//   if (request.action === "fileOperation") {
//     // 连接本地原生应用
//     const port = chrome.runtime.connectNative("com.my_company.my_app");

//     // 设置消息接收监听器
//     port.onMessage.addListener((response) => {
//       if (response.status === "success") {
//         console.log(response);
//         console.log("操作成功:", response.message);
//       } else {
//         console.error("操作失败:", response.reason);
//       }
//     });

//     // 发送文件操作请求（包含操作类型）
//     port.postMessage({
//       action: request.operationType, // "read" 或 "write"
//       filePath: request.filePath,
//       content: request.content, // 写入操作时需要的内容
//     });
//   }
// });

// !  Edge 插件版 B站关注列表导出工具
async function downloadAsJSON(data) {
  try {
    const jsonStr = JSON.stringify(data, null, 2);

    // 使用 TextEncoder 转换为 Uint8Array
    const encoder = new TextEncoder();
    const uint8Array = encoder.encode(jsonStr);

    // 将 Uint8Array 转换为二进制字符串
    let binaryString = "";
    uint8Array.forEach((byte) => {
      binaryString += String.fromCharCode(byte);
    });

    // Base64 编码
    const base64Data = btoa(binaryString);
    const dataUrl = `data:application/json;base64,${base64Data}`;

    await chrome.downloads.download({
      url: dataUrl,
      filename: `bilibili_follows_${new Date()
        .toISOString()
        .replace(/[:.]/g, "-")
        .slice(0, 19)}.json`,
      conflictAction: "uniquify",
      saveAs: true,
    });
  } catch (error) {
    console.error("下载失败:", error);
  }
}
// 监听消息
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "exportFollows") {
    downloadAsJSON(request.data)
      .then(() => sendResponse({ success: true }))
      .catch((err) => sendResponse({ success: false, error: err.message }));
    return true; // 保持消息通道开放
  }
});
